import axios from 'axios'

// 添加一个请求拦截器
axios.interceptors.request.use(function (response) {
    return response;
}, function (error) {
    return Promise.reject(error);
});
/**
 * 添加响应拦截器，统一处理服务器响应和异常
 */
axios.interceptors.response.use(
    response => {
        return response
    },
    error => {
        /**
         * 1.处理SoaException异常
         */
        if (status === 500) {
            if (message.indexOf('ERROR_CODE_003') > -1) {
                this.$message.error(errorCode.ERROR_CODE_003)
                return
            }

            this.$message.error(message)
        }

        return Promise.reject(error)
    }
)

// //创建ajax的方法
// export default function (url, data = {}, type = 'GET', ) {
//     return new Promise((resolve, reject) => {
//         let promise;
//         if (type == 'GET') {
//             //发送get请求
//             let dataStr = '';
//             Object.keys(data).forEach(key => {
//                 // dataStr += key + '=' + data[key] + '&'
//                 dataStr += '/' + data[key];
//             })
//             if (dataStr != '') {
//                 // dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'));
//                 // url = url + '?' + dataStr;
//                 url = url + dataStr;
//             }
//             promise = axios.get(url)

//         } else {
//             //发送post请求
//             promise = axios.post(url, data)
//         }
//         //成功的回调
//         promise.then((result) => {
//             resolve(result.data)
//         })
//             //失败的回调
//             .catch((err) => {
//                 reject(err)
//             });
//     }
//     )

// }


export default {
    /**
     * get方法，对应get请求
     * @param {String} url [请求的url地址]
     * @param {Object} params [请求时携带的参数]
     */
    get(url, params) {
        return new Promise((resolve, reject) => {
            axios.get(url, {
                params: params
            }).then(res => {
                resolve(res.data)
            }).catch(err => {
                reject(err)
            })
        })
    },
    /**
     * post方法，对应post请求
     * @param {String} url [请求的url地址]
     * @param {Object} params [请求时携带的参数]
     */
    post(url, params) {
        return new Promise((resolve, reject) => {
            axios.post(url, params)
                .then(res => {
                    resolve(res.data)
                })
                .catch(err => {
                    reject(err)
                })
        })
    },
    /**
     * postFormData方法，对应post请求，用来提交文件+数据
     * @param {String} url [请求的url地址]
     * @param {Object} params [请求时携带的参数]
     */
    postFormData(url, params) {
        return new Promise((resolve, reject) => {
            axios({
                headers: {
                    'Content-Type': 'multipart/form-data'// ;boundary=----WebKitFormBoundaryQ6d2Qh69dv9wad2u
                },
                transformRequest: [function (data) { // 在请求之前对data传参进行格式转换
                    const formData = new FormData()
                    Object.keys(data).forEach(key => {
                        formData.append(key, data[key])
                    })
                    return formData
                }],
                url,
                method: 'post',
                data: params
            }).then(res => {
                resolve(res.data)
            }).catch(err => {
                reject(err)
            })
        })
    }
}
